body {
    margin: 0;
    padding: 0;
    display: flex;
    /* 细节0：这里, <祖先盒子>的高度由 box 撑开的 */
    /* 设置 垂直center 不会走向页面中央的 */
    /* 因此, 还要给 body 设置默认高度！！！ */
    min-height: 100vh;
    align-items: center;
    justify-content: center;
    background-color: #0D1428;
}

/* 1. "子绝父相" 盖遮罩层 */
.box {
    width: 150px;
    height: 150px;
    background-color: #172033;
    position: relative;
    border-radius: 10px;

    /* 8. 最后, 给超过 [父盒子] 区域, 加上隐藏效果后, */
    /* 即可实现 ->最后的 "流动边框" */
    overflow: hidden;
}

/* 遮罩层 (before) */
.box::before {
    content: '';
    position: absolute;
    height: 300px;
    width: 300px;

    /* 2. 遮罩层 ->设置的是 [径向渐变] */
    background: radial-gradient(#01D17D, transparent, transparent);

    /* 4. 使用动画 */
    animation: animate 1.5s linear infinite;
}

/* 3. 配置动画： */
@keyframes animate {
    0% {
        transform: translate(-150px, -150px);
    }
    25% {
        transform: translate(0, -150px);
    }
    50% {
        transform: translate(0, 0);
    }
    75% {
        transform: translate(-150px, 0);
    }
    100% {
        transform: translate(-150px, -150px);
    }
}

/* 7. 第二个 "遮罩层" */
.box::after {
    content: '';
    position: absolute;

    /* 提：inset 需在定位下生效： */
    /* 对于 [第二个 "遮罩层"], 使其是 ->插入 [第一个 "遮罩层"] 上, */
    /* 在定位下, 通过设置 "inset"属性, 往内凹陷, 让 [第一个 "遮罩层"] */
    /* 显现出来 -》有种边框阴影感... */
    inset: 2px;
    /* (前提 ->在"绝对"或"相对"定位下), 可使用 inset */
    /* 简化代码, 能同时设置四种属性(top、left、bottom、right) */
    /* 即：这里设置为 2px 后, 那么 第二个 "遮罩层", 四个方向各向内2像素, 然后盖上该 "遮罩层"... */

    border-radius: 10px;
    background-color: #172033;
}

.box:hover::before {
    animation: none;
    background: transparent;
}

.box:hover{
    box-shadow: 0 0 4px #01D17D, 0 0 4px #01D17D, 0 0 80px #01D17D;
}
   

